package com.ctshk.rpc.user.service;

import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.rpc.user.dto.UserFootPointGroupDTO;
import com.ctshk.rpc.user.dto.UserFootPointListDTO;
import com.ctshk.rpc.user.req.*;

import java.io.Serializable;
import java.util.List;
import java.util.concurrent.CompletableFuture;

/**
 * <p>
 *  用户足迹接口
 * </p>
 *
 * @author 李新科
 * @date 2021/5/17 20:44
 */
public interface IUserFootPointService {
    Result<PageResponse<UserFootPointListDTO>> queryPage(UserFootPointPageReq req);

    /**
     * 需要单项填充的字段
     * userId
     * type:类型,从SystemBusinessType类取值(必传)
     * title:标题(必传)
     * content:内容(必传)
     * currency:币种,默认HKD单项的直接传HKD,其他传具体的币种(必传)
     * currencyId:币种id,默认HKD单项的直接传HKD的币种id,其他传具体的币种id(可传)
     * price:金额(必传)
     * coverUrl:封面地址(可传)
     * starLevel:酒店星级(酒店单项必传,其他单项忽略)
     * detailId:酒店星级(酒店单项必传,其他单项忽略)
     * @param req
     * @return
     */
    CompletableFuture<Result> add(UserFootPointReq req);

    CompletableFuture<Result> add(Serializable serializable);

    Result delete(Long id, Long userId);

    Result deleteAll(Long userId);

    Result<PageResponse<UserFootPointGroupDTO>> listGroupByDate(UserFootPointPageReq req);

    Integer countByUserId(Long userId);

    Result<UserFootPointListDTO> detail(UserFootPointReq req);
}
